Флаги не меняются.
Команда:
LODSW
Логика:
AX = (DS:SI) if DF = 0 SI = SI + 2 else SI = SI - 2
Команда LODSW передает слово, расположенное по адресу DS:SI в AX, а также инкрементирует или декрементирует SI (в зависимости от состояния флага направления DF), чтобы указатель переместился на следующее слово строки.
Операнды | Такт байты (слова) | Обращения | Байты | Пример |
нет операндов | 16 | - | 1 | LODSW |
(повтор) | 9+17/rep | 1/rep | 1 | REP LODSW |
Примечания:
Хотя и разрешется использовать эту команду в повторном режиме, это почти никогда не делается, т.к. это привело бы к постоянному изменению значения в AX.
Следующий пример иллюстрирует пересылку восьми байтов иэ INIT_PORT в порт 250. (Не пробуйте делать этого на вашей машине, если Вы не знаете о назначении порта 250.)
INIT_PORT: DB '$CMD0000' ;Строка, которую мы хотим ;переслать CLD ;Будем передвигаться в прямом ;направлении LEA SI,INIT_PORT ;Засылаем в SI стартовый ;адрес строки MOV CX,4 ;Будем пересылать 4 слова ;(8 байтов) AGAIN: LODSW ;Загружаем слово в AX... OUT 250,AX ; ...и высылаем его в порт LOOP AGAIN